Data storage requirements are continually increasing in day-to-day computer operations. A redundant array of independent disks (RAID) can be used to spread a large logical storage volume over an array of physically separate storage devices. Various RAID techniques provide for redundant and mirrored storage to avoid data loss through drive failure or data corruption. A RAID volume is typically divided into a number of stripes that each extend across multiple physical devices to create a large logical volume that extends over a partial storage array or an entire storage array. An “XOR” parity system is typically used to store redundant data in each stripe. The parity data can be used to recreate the data stored on any corrupted block of the strip. The parity blocks may be distributed among the physical drives, and mirrored in multiple drives, to minimize the risk of data loss through corruption of data blocks or failure of any physical drive.
As the need for computer data storage in a system increases, there is a need for adding more drives to the original, preexisting RAID data storage array. Expanding the logical volume capacity by adding one or more drives to a preexisting RAID storage array without taking the storage array offline or powering down the storage system is known as Online Capacity Expansion (OCE). OCE can therefore be thought of as the expansion of RAID capacity by adding one or more new storage devices (e.g., disk drives) to the preexisting array without having to power-down or reboot the host computer system. This allows the computer to continue operating with the preexisting storage devices remaining accessible during the expansion process.
There are techniques currently available for OCE but there is always a risk of the data becoming corrupted during the OCE process due to the extended time required to complete the OCE process. For example, the data can be become corrupted if a controller failure, a disk failure or a power failure occurs while OCE is being performed. Larger RAID volumes require longer OCE time, which increases the time period during which data corruption can occur. Another problem with the current OCE methods is that the processing overhead for the OCE process degrades the performance of host IO requests during the OCE process.
These problems emanate from the fact that current OCE techniques involve changing the layout of the entire RAID volume during the OCE process, which requires rewriting the data blocks on the original, pre-existing RAID storage devices. As the pre-existing storage devices are presumably full to near capacity at the time of volume expansion, rewriting all of the data blocks of the preexisting storage devices into the new logical layout consumes large amounts of data processing capacity over long processing periods. There is, therefore, a continuing need for OCE techniques that do not rewrite the data blocks on the pre-existing storage devices as part of the OCE process.